// /**
//  * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
//  *
//  * 
//  * @param array int整型一维数组 
//  * @return int整型一维数组
//  */
//  function FindNumsAppearOnce( array ) {
//   // write code here
//   let bitSum = {}
//   for(let i of array){
//     let bitMask = 1
//     for(let j = 31;j >= 0;j--){
//       let bit = i & bitMask
//       if(bit !== 0){
//         if(bitSum[j] !== undefined){
//           bitSum[j] += 1
//         } else{
//           bitSum[j] = 1
//         }
//       }
//       bitMask = bitMask << 1
//     }
//   }
//   let result = 0
//   for(let i = 0;i < 32;i++){
//     result = result << 1
//     result += bitSum[i] % 3
//   }
//   return result
// }
// console.log(FindNumsAppearOnce([3,3,3,2]));
// // module.exports = {
// //   FindNumsAppearOnce : FindNumsAppearOnce
// // };

/**
 * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
 *
 * 
 * @param array int整型一维数组 
 * @return int整型一维数组
 */
 function FindNumsAppearOnce( array ) {
  // write code here
  let bitSum = {}
  for(let i of array){
    let bitMask = 1
    for(let j = 31;j >=0 ;j--){
      let bit = i & bitMask
      if(bit !== 0){
        if(bitSum[j] !== undefined){
          bitSum[j] += 1
        }else{
          bitSum[j] = 1
        }
      }
      bitMask = bitMask << 1
    }
  }
  let result = 0
  for(let i = 0;i < 32;i++){
      result = result << 1
      result += bitSum[i] % 3
  }
  return result
}
console.log(FindNumsAppearOnce([3,3,3,8,4,4,4]));

module.exports = {
  FindNumsAppearOnce : FindNumsAppearOnce
};